std::ifstream ifs(argv[1], std::ios::in | std::ios::binary | std::ios::ate ); //ifs.seekg(0, std::ios::end); size_t byte_count = ifs.tellg(); ifs.seekg(0, std::ios::beg); std::cout << "file size: " << byte_count << std::endl; char *pb = new char [byte_count]; ifs.read(pb, byte_count); std::ofstream ofs(argv[2], std::ios::out | std::ios::binary); ofs.write(pb, byte_count); ofs.close(); delete[] pb; ifs.close();
First, of course, you gotta include the necessary headers.
#include <fstream> // No .h extension
So, the fstream header contains defs for two types, std::ifstream and std::ofstream. (An easy way to remember this is the originals are istream and ostream, so just add an f before the "stream")
Output example
std::ofstream outfile; // instantiate output file outfile.open("foo.txt"); // associate a disk file // Write some data to the file outfile << "This is a line of text" << std::endl; outfile << "Another line of text" << std::endl; outfile << "An integer: " << 42 << std::endl; outfile << "A double: " << 3.1415 << std::endl; outfile.close(); // close the file [optional]
Note: For automatic, stack-based objects, we don't need to call close since it will be done in the destructor.
remember to check whether the file is open....
if(!outfile.is_open())
void f5(void) { std::ifstream infile("foo.txt"); if (!infile.is_open()) std::cout << "Can't open file.\n"; else { std::string str; while (!infile.eof()) { infile >> str; std::cout << str << std::endl; } } }
void f11(void) { std::ifstream infile("foo.txt"); if (!infile.is_open()) std::cout << "Can't open file.\n"; else { std::string str; while (!infile.eof()) { if (std::getline(infile, str).eof()) break; std::cout << str << std::endl; } } }
Some modes and their usages
Mode Meaning
ios_base::in Open file for input (default for ifstream)
ios_base::out Open file for output (default for ofstream)
ios_base::app Seek to the end before each write
ios_base::trunc Truncate file (delete contents) after opening (default for ofstream)
ios_base::ate Seek to the end once after opening
ios_base::binary Open file in binary mode